package com.zx.quarter.方案学习.cpt_1_jdk;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 于第一种方式相比，
 * 	优势 1> 当启动和去取消任务时可以控制 
 * 	优势 2> 第一次执行任务时可以指定你想要的delay时间
 * 在实现时，Timer类可以调度任务，TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务，它是线程安全的。
 * 当Timer的构造器被调用时，它创建了一个线程，这个线程可以用来调度任务。 下面是代码：
 */
public class Task2 {
	public static void main(String[] args) {
		Timer timer = new Timer();
		
		// 任务1， 延迟 5s执行
		timer.schedule(getTask("1111"), 5000);

		// 任务2， 延迟 1s执行
		timer.schedule(getTask("2222"), 1000);
		
		// 任务3，延迟2s执行后，每间隔1S执行一次 
		long delay = 2000;
		long intevalPeriod = 1000;
		timer.scheduleAtFixedRate(getTask("A"), delay, intevalPeriod);
		timer.scheduleAtFixedRate(getTask("B"), delay, intevalPeriod);
		timer.scheduleAtFixedRate(getTask("C"), delay, intevalPeriod);
		timer.scheduleAtFixedRate(getTask("D"), delay, intevalPeriod);
	} 
	
	// 同一个timerTask不能重复提交给timer 
	private static TimerTask t = new TimerTask() {
		@Override
		public void run() {
			System.out.println("AAA");
		}
	};
	
	public static TimerTask getTask(String str) {
//		return t;
		return  new TimerTask() {
			@Override
			public void run() {
				System.out.println(Thread.currentThread().getName() + " : " + str);
			}
		};
	}
}
